<?php
include_once("../FachadaBD.php");

//Clase Usuarios
class Usuario{
	//Variables principales
	var $nombre;
	var $apellido;
	var $email;
	var $username;
	var $password;
	var $informacion;
	var $voluntario;
	var $atributos;
	var $fecha;
	var $telefono;
	
	function Usuario(){}
	
	function validarUsuario(){
		$BDf=FachadaBD::getInstance();
		$conect=$BDf->conectarse();
		$row = $BDf->UserValidationCheck($this->username);
		$permisos = $BDf->ConsultarPermisos($this->username);
		$BDf->desconectar($conect);
		$tam = count($permisos);
        $i = 1;

        while($i<=$tam){

            $elem = $permisos[$i];
            $i++; 
		}
		if($row){
			$conect=$BDf->ConectarseUsuario($this->username,$this->password);
			$_SESSION["k_username"] = $row['username'];
			$_SESSION["credentials"] = $elem["nombre"];	// a que grupo pertenece
			$BDf->desconectar($conect);
			return 0;
        }else{
            return 1;
        }
	}
	
	function insertarUsuario(){
		$BDf=FachadaBD::getInstance();
		$conect=$BDf->conectarse();
		//$BDf->Insertar_Usuario($this->nombre,$this->apellido,$this->email,$this->username,$this->password,$this->informacion,$this->voluntario,$this->atributos);
		$BDf->Insertar_Usuario2($this);
		//$BDf->Crear_Usuario($this->username,$this->password );
		$BDf->Permisos($this->username,$this->password );
		$BDf->desconectar($conect);
	}
	
	function modificarUsuario(){
		$BDf=FachadaBD::getInstance();
		$conect=$BDf->conectarse();
		//$BDf->Editar_Usuario($this->nombre,$this->apellido,$this->email,$this->username,$this->password,$this->informacion,$this->voluntario,$this->atributos);
		$BDf->Editar_Usuario2($this);
		//$BDf->Editar_Usuario2($this);
		$BDf->desconectar($conect);
	}
	
	/*************************************************
	 * 
	 * Funcion Especial del Administrador
	 * para Modificar los Grupos
	 * 
	 * **********************************************/
	
//	function modificarUsuarioAdmin($this,$us){
	//	$BDf=FachadaBD::getInstance();
	//	$conect=$BDf->ConectarseUsuario($this->username,$this->password);
	//	$BDf->Editar_Usuario_Admin($us);
	//	$BDf->desconectar($conect);
	//}
	
	function usernameEmailCheck(){
		$BDf=FachadaBD::getInstance();
		$conect=$BDf->conectarse();
		//Chequea en la Base de Datos si el Usuario existe
		$username_exist= $BDf->ChequearUsuario($this->username);
		//Chequea si el EMail Existe
		$email_exist= $BDf->ChequearEMail($this->email);
		$BDf->desconectar($conect);
		if ($email_exist>0|$username_exist>0) {
		return 0;
		}
		elseif(!preg_match("/^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/i",$this->email)){
		return 1;
		}
		else{
		return 2;
		};
	}
	
	function getUsuario($user){
		$BDf=FachadaBD::getInstance();
		$conect=$BDf->conectarse();
		$row=$BDf->Mostrar_Usuario($user);
		$BDf->desconectar($conect);
		$this->setNombre($row["nombre"]);
		$this->setApellido($row["apellido"]);
		$this->setEmail($row["email"]);
		$this->setUsername($row["username"]);
		$this->setInformacion($row["informacion"]);
		$this->setVoluntario($row["voluntario"]);
		$this->setAtributos($row["atributos"]);
		$this->setTelefono($row["telefono"]);
		//$this->setGrupo($row["grupo"]);
	}
	
	function Mostrar_Usuarios(){
		$BDf=FachadaBD::getInstance();
		$conect=$BDf->conectarse();
		$array = $BDf->Mostrar_Usuarios();
		$BDf->desconectar($conect);
		return $array;
	}
	
	//NUEVA FUNCION PARA MOSTRAR GRUPOS DE UN USUARIO AL ADMINISTRADOR
	
	function Mostrar_Grupos_Pert($UserName){
		
		$BDf=FachadaBD::getInstance();
		$conect=$BDf->conectarse();
		$array = $BDf->Mostrar_Grupos_Perte($UserName);
		$BDf->desconectar($conect);
		return $array;
		
	}
	
	function Mostrar_Usuarios_keyword($keyword){
		$BDf=FachadaBD::getInstance();
		$conect=$BDf->conectarse();
		$array = $BDf->Mostrar_Usuarios_keyword($keyword);
		$BDf->desconectar($conect);
		return $array;
	}
	
	function getUserArray(){
		$array = Array();
		$array["nombre"]=$this->getNombre();
		$array["apellido"]=$this->getApellido();
		$array["email"]=$this->getEmail();
		$array["username"]=$this->getUsername();
		$array["informacion"]=$this->getInformacion();
		$array["voluntario"]=$this->getVoluntario();
		$array["atributos"]=$this->getAtributos();
		$array["telefono"]=$this->getTelefono();
		//$array["grupo"]=$this->getGrupo();
		return $array;
	}
	
	function eliminarUsuario(){
		$BDf=FachadaBD::getInstance();
		$conect=$BDf->conectarse();
		$BDf->Eliminar_Usuario($this->username);
		$BDf->Eliminar_Cuenta($this->username);
		$BDf->desconectar($conect);
		
	}
	
	function esAdmin(){
		$BDf=FachadaBD::getInstance();
		$conect=$BDf->conectarse();
		$result = $BDf->EsAdmin($this->username);
		$BDf->desconectar($conect);
		return $result;
		
	}
	
	function InsertUserGroup($UserName,$Group){
		
		$FBD = FachadaBD::getInstance();
		$conect=$FBD->conectarse();
		$FBD->Insertar_Usuario_Grupo($UserName,$Group);
		$FBD->desconectar($conect);
		
	}
	
	function RemovUserGroup($UserName,$Group){
		
		$FBD = FachadaBD::getInstance();
		$conect=$FBD->conectarse();
		$FBD->Eliminar_Usuario_Grupo($UserName,$Group);
		$FBD->desconectar($conect);
		
	}
	
	
	function getNombre(){return $this->nombre;}
	
	function setNombre($nomb){ $this->nombre = $nomb;}
	
	//function setGrupo($grupo){ $this->Grupo = $grupo;}
	
	function getApellido(){return $this->apellido;}
	
	function setApellido($apell){ $this->apellido = $apell;}
	
	function getEmail(){return $this->email;}
	
	function setEmail($email){ $this->email = $email;}
	
	function getUsername(){return $this->username;}
	
	//function getGrupo(){return $this->Grupo;}
	
	function setUsername($userN){ $this->username = $userN;}
	
	function getPassword(){return $this->password;}
	
	function setPassword($clave){ $this->password = $clave;}
	
	function getInformacion(){return $this->informacion;}
	
	function setInformacion($info){ $this->informacion = $info;}
	
	function getVoluntario(){return $this->voluntario;}
	
	function setVoluntario($vol){ $this->voluntario = $vol;}
	
	function getAtributos(){return $this->atributos;}
	
	function setAtributos($atrib){ $this->atributos = $atrib;}
	
	function getFecha(){return $this->fecha;}
	
	function setFecha($fecha2){ $this->fecha = $fecha2;}	
	
	function getTelefono(){return $this->telefono;}
	
	function setTelefono($tel){ $this->telefono = $tel;}	
}
?>
